package com.dotndot.controller.network.resData;

import java.lang.reflect.*;

import com.google.gson.*;

public class ResGson
{
    private static final int STATUS_INDEX = 0;
    private static final int CODE_INDEX = 1;
    private static final int MESSAGE_INDEX = 2;
    private static final int OBJECT_INDEX = 3;

    public String status = null;
    public String code = null;
    public String message = null;
    public Object object = null;

    public ResGson( String resJson )
    {

        Gson gson = new Gson();
        JsonParser parser = new JsonParser();
        JsonArray array = parser.parse(resJson).getAsJsonArray();
        status = gson.fromJson(array.get(STATUS_INDEX), String.class);
        code = gson.fromJson(array.get(CODE_INDEX), String.class);
        message = gson.fromJson(array.get(MESSAGE_INDEX), String.class);

    }

    public ResGson( String resJson, Class<?> cls )
    {

        Gson gson = new Gson();
        JsonParser parser = new JsonParser();
        JsonArray array = parser.parse(resJson).getAsJsonArray();
        status = gson.fromJson(array.get(STATUS_INDEX), String.class);
        code = gson.fromJson(array.get(CODE_INDEX), String.class);
        message = gson.fromJson(array.get(MESSAGE_INDEX), String.class);

        if( array.size() > OBJECT_INDEX )
        {
            object = gson.fromJson(array.get(OBJECT_INDEX), cls);
        }
    }

    public ResGson( String resJson, Type typeOfT )
    {

        Gson gson = new Gson();
        JsonParser parser = new JsonParser();
        JsonArray array = parser.parse(resJson).getAsJsonArray();
        status = gson.fromJson(array.get(STATUS_INDEX), String.class);
        code = gson.fromJson(array.get(CODE_INDEX), String.class);
        message = gson.fromJson(array.get(MESSAGE_INDEX), String.class);

        if( array.size() > OBJECT_INDEX )
        {
            object = gson.fromJson(array.get(OBJECT_INDEX), typeOfT);
        }
    }

    // public static String getStatus(String resJson){
    //
    // Gson gson = new Gson();
    // JsonParser parser = new JsonParser();
    // JsonArray array = parser.parse(resJson).getAsJsonArray();
    // String status = gson.fromJson(array.get(STATUS_INDEX), String.class);
    // return status;
    //
    // }
    //
    // public static String getCode(String resJson){
    //
    // Gson gson = new Gson();
    // JsonParser parser = new JsonParser();
    // JsonArray array = parser.parse(resJson).getAsJsonArray();
    // String code = gson.fromJson(array.get(CODE_INDEX), String.class);
    // return code;
    //
    // }
    //
    // public static String getMessage(String resJson){
    //
    // Gson gson = new Gson();
    // JsonParser parser = new JsonParser();
    // JsonArray array = parser.parse(resJson).getAsJsonArray();
    // String message = gson.fromJson(array.get(MESSAGE_INDEX), String.class);
    // return message;
    //
    // }
    //
    // public static <T> Object getObject(String resJson, Class<T> classOfT){
    //
    // Gson gson = new Gson();
    // JsonParser parser = new JsonParser();
    // JsonArray array = parser.parse(resJson).getAsJsonArray();
    //
    // Object retObject = null;
    // retObject = gson.fromJson(array.get(OBJECT_INDEX), classOfT);
    // return retObject;
    //
    // }
}
